/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tk.eigh.ksvg.component.structure;

import ksvg.core.SVGStructural;
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFComponent;
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFProperty;
import tk.eigh.ksvg.types.SVGCoordinate;
import tk.eigh.ksvg.types.SVGLength;

/**
 * <p>The description of the <a
 * href="http://www.w3.org/TR/SVG/filters.html#FilterElement">‘filter’</a>
 * element follows:</p>
 */
@JSFComponent(name = "svg:Filter",
type = "tk.eigh.svg.Filter",
family = "structure.Filter",
clazz = "ksvg.structure.Filter",
tagClass = "ksvg.tags.structure.FilterTag",
defaultRendererType = "structure.SVGFilterRenderer")
public abstract class AbstractFilter extends SVGStructural {

    /**
     * ‘filterUnits’</a><br/> <p>Defines the
     * coordinate system for attributes <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementXAttribute">‘x’</a>, <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementYAttribute">‘y’</a>, <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementWidthAttribute">‘width’</a> and <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementHeightAttribute">‘height’</a>.</p>
     *
     * <p>If filterUnits="userSpaceOnUse", <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementXAttribute">‘x’</a>, <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementYAttribute">‘y’</a>, <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementWidthAttribute">‘width’</a> and <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementHeightAttribute">‘height’</a> represent values in the current
     * user coordinate system in place at the time when the <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElement">‘filter’</a> is referenced (i.e., the user
     * coordinate system for the element referencing the <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElement">‘filter’</a> via a <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterProperty">‘filter’</a> property).</p>
     *
     * <p>If filterUnits="objectBoundingBox",
     * then <a href="http://www.w3.org/TR/SVG/filters.html#FilterElementXAttribute">‘x’</a>, <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementYAttribute">‘y’</a>, <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementWidthAttribute">‘width’</a> and <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementHeightAttribute">‘height’</a> represent fractions or percentages
     * of the bounding box on the referencing element (see <a
     * href="http://www.w3.org/TR/SVG/coords.html#ObjectBoundingBox">Object bounding box units</a>).</p>
     *
     * <p>If attribute <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementFilterUnitsAttribute">‘filterUnits’</a> is not specified, then the
     * effect is if a value of 'objectBoundingBox' were specified.</p>
     *
     * <p><a
     * href="http://www.w3.org/TR/SVG/animate.html#Animatable">Animatable</a>: yes.</p>
     */
    @JSFProperty
    public abstract String getFilterUnits();

    /**
     * ‘filterRes’</a><br/> <p>This attribute
     * takes the form
     * <code>x-pixels [y-pixels]</code>, and indicates the width and height of
     * the intermediate images in pixels. If not provided, then the user agent
     * will use reasonable values to produce a high-quality result on the output
     * device. </p>
     *
     * <p>Care should be taken when assigning a non-default value to this
     * attribute. Too small of a value may result in unwanted pixelation in the
     * result. Too large of a value may result in slow processing and large
     * memory usage.</p>
     *
     * <p>Negative values are an error (see <a
     * href="http://www.w3.org/TR/SVG/implnote.html#ErrorProcessing">Error processing</a>). Zero values
     * disable rendering of the element which referenced the filter.</p>
     *
     * <p>Non-integer values are truncated, i.e rounded to the closest integer
     * value towards zero.</p>
     *
     * <p><a
     * href="http://www.w3.org/TR/SVG/animate.html#Animatable">Animatable</a>: yes.</p>
     */
    @JSFProperty
    public abstract String getFilterRes();

    /**
     * ‘x’</a>, <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementYAttribute">‘y’</a>, <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementWidthAttribute">‘width’</a> and <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementHeightAttribute">‘height’</a><br/> <p>These attributes define
     * a rectangular region on the canvas to which this filter applies.</p>
     *
     * <p>The amount of memory and processing time required to apply the filter
     * are related to the size of this rectangle and the <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementFilterResAttribute">‘filterRes’</a> attribute of the filter.</p>
     *
     * <p>The coordinate system for these attributes depends on the value for
     * attribute <a href="http://www.w3.org/TR/SVG/filters.html#FilterElementFilterUnitsAttribute">‘filterUnits’</a>.</p>
     *
     * <p>Negative values for <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementWidthAttribute">‘width’</a> or <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementHeightAttribute">‘height’</a> are an error (see <a
     * href="http://www.w3.org/TR/SVG/implnote.html#ErrorProcessing">Error processing</a>). Zero values
     * disable rendering of the element which referenced the filter.</p>
     *
     * <p>The bounds of this rectangle act as a hard clipping region for each <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterPrimitivesOverview">filter primitive</a>
     * included with a given <a href="http://www.w3.org/TR/SVG/filters.html#FilterElement">‘filter’</a> element; thus, if the effect of
     * a given filter primitive would extend beyond the bounds of the rectangle
     * (this sometimes happens when using a <a
     * href="http://www.w3.org/TR/SVG/filters.html#feGaussianBlurElement">‘feGaussianBlur’</a> filter primitive with a
     * very large <a
     * href="http://www.w3.org/TR/SVG/filters.html#feGaussianBlurStdDeviationAttribute">‘stdDeviation’</a>), parts of the effect will
     * get clipped.</p>
     *
     * <p>If <a href="http://www.w3.org/TR/SVG/filters.html#FilterElementXAttribute">‘x’</a> or <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementYAttribute">‘y’</a> is not specified, the effect is as if a
     * value of -10% were specified.</p>
     *
     * <p>If <a href="http://www.w3.org/TR/SVG/filters.html#FilterElementWidthAttribute">‘width’</a> or <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementHeightAttribute">‘height’</a> is not specified, the effect is as
     * if a value of 120% were specified.</p>
     *
     * <p><a
     * href="http://www.w3.org/TR/SVG/animate.html#Animatable">Animatable</a>: yes.</p>
     */
    @JSFProperty
    public abstract SVGCoordinate getX();

    /**
     * ‘x’</a>, <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementYAttribute">‘y’</a>, <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementWidthAttribute">‘width’</a> and <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementHeightAttribute">‘height’</a><br/> <p>These attributes define
     * a rectangular region on the canvas to which this filter applies.</p>
     *
     * <p>The amount of memory and processing time required to apply the filter
     * are related to the size of this rectangle and the <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementFilterResAttribute">‘filterRes’</a> attribute of the filter.</p>
     *
     * <p>The coordinate system for these attributes depends on the value for
     * attribute <a href="http://www.w3.org/TR/SVG/filters.html#FilterElementFilterUnitsAttribute">‘filterUnits’</a>.</p>
     *
     * <p>Negative values for <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementWidthAttribute">‘width’</a> or <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementHeightAttribute">‘height’</a> are an error (see <a
     * href="http://www.w3.org/TR/SVG/implnote.html#ErrorProcessing">Error processing</a>). Zero values
     * disable rendering of the element which referenced the filter.</p>
     *
     * <p>The bounds of this rectangle act as a hard clipping region for each <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterPrimitivesOverview">filter primitive</a>
     * included with a given <a href="http://www.w3.org/TR/SVG/filters.html#FilterElement">‘filter’</a> element; thus, if the effect of
     * a given filter primitive would extend beyond the bounds of the rectangle
     * (this sometimes happens when using a <a
     * href="http://www.w3.org/TR/SVG/filters.html#feGaussianBlurElement">‘feGaussianBlur’</a> filter primitive with a
     * very large <a
     * href="http://www.w3.org/TR/SVG/filters.html#feGaussianBlurStdDeviationAttribute">‘stdDeviation’</a>), parts of the effect will
     * get clipped.</p>
     *
     * <p>If <a href="http://www.w3.org/TR/SVG/filters.html#FilterElementXAttribute">‘x’</a> or <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementYAttribute">‘y’</a> is not specified, the effect is as if a
     * value of -10% were specified.</p>
     *
     * <p>If <a href="http://www.w3.org/TR/SVG/filters.html#FilterElementWidthAttribute">‘width’</a> or <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementHeightAttribute">‘height’</a> is not specified, the effect is as
     * if a value of 120% were specified.</p>
     *
     * <p><a
     * href="http://www.w3.org/TR/SVG/animate.html#Animatable">Animatable</a>: yes.</p>
     */
    @JSFProperty
    public abstract SVGCoordinate getY();

    /**
     * ‘x’</a>, <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementYAttribute">‘y’</a>, <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementWidthAttribute">‘width’</a> and <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementHeightAttribute">‘height’</a><br/> <p>These attributes define
     * a rectangular region on the canvas to which this filter applies.</p>
     *
     * <p>The amount of memory and processing time required to apply the filter
     * are related to the size of this rectangle and the <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementFilterResAttribute">‘filterRes’</a> attribute of the filter.</p>
     *
     * <p>The coordinate system for these attributes depends on the value for
     * attribute <a href="http://www.w3.org/TR/SVG/filters.html#FilterElementFilterUnitsAttribute">‘filterUnits’</a>.</p>
     *
     * <p>Negative values for <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementWidthAttribute">‘width’</a> or <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementHeightAttribute">‘height’</a> are an error (see <a
     * href="http://www.w3.org/TR/SVG/implnote.html#ErrorProcessing">Error processing</a>). Zero values
     * disable rendering of the element which referenced the filter.</p>
     *
     * <p>The bounds of this rectangle act as a hard clipping region for each <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterPrimitivesOverview">filter primitive</a>
     * included with a given <a href="http://www.w3.org/TR/SVG/filters.html#FilterElement">‘filter’</a> element; thus, if the effect of
     * a given filter primitive would extend beyond the bounds of the rectangle
     * (this sometimes happens when using a <a
     * href="http://www.w3.org/TR/SVG/filters.html#feGaussianBlurElement">‘feGaussianBlur’</a> filter primitive with a
     * very large <a
     * href="http://www.w3.org/TR/SVG/filters.html#feGaussianBlurStdDeviationAttribute">‘stdDeviation’</a>), parts of the effect will
     * get clipped.</p>
     *
     * <p>If <a href="http://www.w3.org/TR/SVG/filters.html#FilterElementXAttribute">‘x’</a> or <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementYAttribute">‘y’</a> is not specified, the effect is as if a
     * value of -10% were specified.</p>
     *
     * <p>If <a href="http://www.w3.org/TR/SVG/filters.html#FilterElementWidthAttribute">‘width’</a> or <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementHeightAttribute">‘height’</a> is not specified, the effect is as
     * if a value of 120% were specified.</p>
     *
     * <p><a
     * href="http://www.w3.org/TR/SVG/animate.html#Animatable">Animatable</a>: yes.</p>
     */
    @JSFProperty
    public abstract SVGLength getWidth();

    /**
     * ‘x’</a>, <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementYAttribute">‘y’</a>, <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementWidthAttribute">‘width’</a> and <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementHeightAttribute">‘height’</a><br/> <p>These attributes define
     * a rectangular region on the canvas to which this filter applies.</p>
     *
     * <p>The amount of memory and processing time required to apply the filter
     * are related to the size of this rectangle and the <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementFilterResAttribute">‘filterRes’</a> attribute of the filter.</p>
     *
     * <p>The coordinate system for these attributes depends on the value for
     * attribute <a href="http://www.w3.org/TR/SVG/filters.html#FilterElementFilterUnitsAttribute">‘filterUnits’</a>.</p>
     *
     * <p>Negative values for <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementWidthAttribute">‘width’</a> or <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementHeightAttribute">‘height’</a> are an error (see <a
     * href="http://www.w3.org/TR/SVG/implnote.html#ErrorProcessing">Error processing</a>). Zero values
     * disable rendering of the element which referenced the filter.</p>
     *
     * <p>The bounds of this rectangle act as a hard clipping region for each <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterPrimitivesOverview">filter primitive</a>
     * included with a given <a href="http://www.w3.org/TR/SVG/filters.html#FilterElement">‘filter’</a> element; thus, if the effect of
     * a given filter primitive would extend beyond the bounds of the rectangle
     * (this sometimes happens when using a <a
     * href="http://www.w3.org/TR/SVG/filters.html#feGaussianBlurElement">‘feGaussianBlur’</a> filter primitive with a
     * very large <a
     * href="http://www.w3.org/TR/SVG/filters.html#feGaussianBlurStdDeviationAttribute">‘stdDeviation’</a>), parts of the effect will
     * get clipped.</p>
     *
     * <p>If <a href="http://www.w3.org/TR/SVG/filters.html#FilterElementXAttribute">‘x’</a> or <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementYAttribute">‘y’</a> is not specified, the effect is as if a
     * value of -10% were specified.</p>
     *
     * <p>If <a href="http://www.w3.org/TR/SVG/filters.html#FilterElementWidthAttribute">‘width’</a> or <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementHeightAttribute">‘height’</a> is not specified, the effect is as
     * if a value of 120% were specified.</p>
     *
     * <p><a
     * href="http://www.w3.org/TR/SVG/animate.html#Animatable">Animatable</a>: yes.</p>
     */
    @JSFProperty
    public abstract SVGLength getHeight();
}